package com.iqiyi.pps.epg.core.model.program;


import knowledge.pub.Common;
import knowledge.pub.Properties;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

import javax.persistence.*;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.Map;

@Entity
@Table(name = "live_episode")
@Cache(usage = CacheConcurrencyStrategy.NONE)
public class ProgramData {
    public static final String PAIED_AVAILABLE = "PAIED_AVAILABLE";
    public static final String PAIED_NOT_AVAILABLE = "PAIED_NOT_AVAILABLE";
    public static final String FREE = "FREE";
    public static final int PST_NULL = -1; //play status type
    public static final int PST_WAITING = 0;
    public static final int PST_LIVE = 1;
    public static final int PST_REPLAY = 2;
    public static final int PST_REQUEST = 3;
    public static final Map<Integer, String> LIVE_PROGRAM_TYPE_MAP = new HashMap<Integer, String>() {{
        put(1, "体育");
        put(2, "演唱会");
        put(3, "发布会");
        put(4, "常规节目");
        put(5, "综艺晚会");
        put(6, "电视台节目");
        put(7, "轮播台节目");
    }};

    public static final Map<Integer, Common.PlayStatus> PLAY_STATUS_MAP = new HashMap<Integer, Common.PlayStatus>() {{
        put(PST_NULL, Common.PlayStatus.PLAY_STATUS_NULL);
        put(PST_WAITING, Common.PlayStatus.WAITING);
        put(PST_LIVE, Common.PlayStatus.LIVE_TYPE);
        put(PST_REPLAY, Common.PlayStatus.REPLAY_TYPE);
        put(PST_REQUEST, Common.PlayStatus.REQUEST_TYPE);
    }};

    public static final Map<String, Common.SaleType> SALE_TYPE_MAP = new HashMap<String, Common.SaleType>() {{
        put("type_nosale", Common.SaleType.SALE_TYPE_NOT_SALE);
        put("type_sale", Common.SaleType.SALE_TYPE_ON_SALE);
    }};

    public static final Map<Integer, Properties.ChatRoomSummary.ChatRights> CHAT_RIGHTS_MAP = new HashMap<Integer, Properties.ChatRoomSummary.ChatRights>() {{
        put(0, Properties.ChatRoomSummary.ChatRights.CHAT_RIGHTS_ALL);
        put(1, Properties.ChatRoomSummary.ChatRights.CHAT_RIGHTS_VIP_CHAT);
        put(2, Properties.ChatRoomSummary.ChatRights.CHAT_RIGHTS_PAY_CHAT);
    }};


    public static final Integer TYPE_UNDEFINE = 0; //未设置
    public static final Integer TYPE_DEMAND = 1; //点播
    public static final Integer TYPE_LIVE = 2; //直播
    public static final int ILLEGAL_STATUS_ERROR = -1;
    public static final int ILLEGAL_STATUS_NO_ERROR = 0;
    public static final int PROGRAM_LOCKED = 1;
    public static final int PROGRAM_UNLOCKED = 0;

    public static final int CHARGE_STATUS_FREE = Properties.Boss.ChargeStatus.CHARGE_STATUS_FREE_VALUE;
    public static final int CHARGE_STATUS_PAID_PART = Properties.Boss.ChargeStatus.CHARGE_STATUS_PAID_PART_VALUE;
    public static final int CHARGE_STATUS_PAIED_AVAILABLE = Properties.Boss.ChargeStatus.CHARGE_STATUS_PAIED_AVAILABLE_VALUE;

    public static final String DBT_REGION_BEIJING = "bj";
    public static final String DBT_REGION_TAIWAN = "tw";
    public static final String DBT_REGION_SHANGHAI = "sh";

    public static final int VIP_TYPE_COMMON_VIP = 0;
    public static final int VIP_TYPE_TENNIS_VIP = 1;
    public static final int VIP_TYPE_GOLF_VIP = 2;
    private long id;
    private int fatherId;
    private long qipuId;
    private int type;
    private int imageSummaryId;
    private Timestamp startPlayTime;
    private Timestamp stopPlayTime;
    private String pname;
    private String description;
    private String tag;
    private int videoLength;
    private String audioChannel;
    private String leftAudioChannel;
    private String rightAudioChannel;
    private int waterMarkFlag;
    private long qitanId;
    private String weiboTopic;
    private int allowPopups = 0;
    private Timestamp addTime;
    private Timestamp updateTime;
    private int sync;
    private int deleteFlag;
    private int memberOnly;
    private int memberFree;
    private Timestamp paidStartTime;
    private Timestamp paidEndTime;
    private String bossStatus;
    private String defaultLogoUrl = "";
    private int orderBy = 0;
    private String pageUrl;
    private int allowComment;
    private Timestamp streamStartTime;
    private Timestamp streamEndTime;
    private int qiyiProduct;
    private int qiyiExclusive;
    private int freeStatus;
    private Integer live;    //播放类型
    private Long carouselEpisode = 0L;
    private int ruleId;
    private int duration;
    private String barCode;
    private String channelName = "";
    private int channelLiveType = 0;
    private String referContentType = "";
    private String albumName = "";
    private int episodeGrade = 0;
    private int illegalStatus = ILLEGAL_STATUS_NO_ERROR;
    private long lastSortTime = 0;
    private String streamError = "";
    private int isLocked = PROGRAM_UNLOCKED;
    private int subscribe = 0;

    private long automationRuleId = 0;

    private int chatEnable;
    private int chatDisplay = 1;
    private long chatRoomId;
    private String category = "[]";

    private int daojuEnable;
    private String daojuId;
    private String daojuName;
    private String daojuStar;

    private int formal;

    /* add 2016/05/20 */
    private int playStatus = PST_NULL;
    private int recommendRate = 1;
    private int maxPlaybackPeriod;
    private String recommendRemark;
    private String subjectUrl;
    private int channelHasStream;


    /* add 2016/06/21 */
    private Timestamp noticeStartTime;
    private Timestamp noticeStopTime;
    private int hot;
    private int test;

    /* add 2016/07/14 */
    private int delayTimes;

    /* add 2016/08/31 */
    private String projectType = "";

    /* add 2016/08/31 */
    private String resourceId = "";
    private int snapShotType = 0;

    private String snapPicUrl = "";

    private int checkType = 1;

    private String bossInfo;

    private int chargeStatus = CHARGE_STATUS_FREE;

    private int chatRights = 0;

    private int chatPopups = 0;

    /* add 2016/12/15 */
    private int chatFake = 1;
    private int publicLevel;

    // add 2016-12-21
    private int advertDuration;
    // add 2017-02-14
    private int advertEnable = 0;
    // add 2017-03-14
    private int directorEnable = 0;

    // add 2017-06-20
    private String logoHidden;

    // add 2017-06-13
    private String matchSummary = null;
    // add 2017-07-17
    private int snapShotGap = 0;
    // add 2017-10-31
    private int vipType = 0;
    //add 2017-12-04
    private String programTag = "";

    private String dbtRegion = DBT_REGION_BEIJING;

    private String tabConrtols = "";

    //add 2018-01-11 添加精彩推荐
    private int displayRecommend = 1;

    //add 2017-12-26
    private int needOA = 0;
    private String oaDocNo = null;
    private String oaDocUrl = null;
    private String oaDocEditorStatus = null;

    //add 20180410 是否正在导播
    private int directorOpen = 0;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    @Column(name = "father_id")
    public int getFatherId() {
        return fatherId;
    }

    public void setFatherId(int fatherId) {
        this.fatherId = fatherId;
    }

    @Column(name = "qipu_id")
    public long getQipuId() {
        return qipuId;
    }

    public void setQipuId(long qipuId) {
        this.qipuId = qipuId;
    }

    @Column(name = "type")
    public int getType() {
        return type;
    }

    public void setType(int type) {
        this.type = type;
    }

    @Column(name = "image_summary_id")
    public int getImageSummaryId() {
        return imageSummaryId;
    }

    public void setImageSummaryId(int imageSummaryId) {
        this.imageSummaryId = imageSummaryId;
    }

    @Column(name = "start_play_time")
    public Timestamp getStartPlayTime() {
        return startPlayTime;
    }

    public void setStartPlayTime(Timestamp startPlayTime) {
        this.startPlayTime = startPlayTime;
    }

    @Column(name = "stop_play_time")
    public Timestamp getStopPlayTime() {
        return stopPlayTime;
    }

    public void setStopPlayTime(Timestamp stopPlayTime) {
        this.stopPlayTime = stopPlayTime;
    }

    @Column(name = "program_name")
    public String getPname() {
        return pname;
    }

    public void setPname(String pname) {
        this.pname = pname;
    }

    @Column(name = "description")
    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Column(name = "tag")
    public String getTag() {
        return tag;
    }

    public void setTag(String tag) {
        this.tag = tag;
    }

    @Column(name = "video_piece_length")
    public int getVideoLength() {
        return videoLength;
    }

    public void setVideoLength(int videoLength) {
        this.videoLength = videoLength;
    }

    @Column(name = "audio_channel")
    public String getAudioChannel() {
        return audioChannel;
    }

    public void setAudioChannel(String audioChannel) {
        this.audioChannel = audioChannel;
    }

    @Column(name = "left_audio_channel")
    public String getLeftAudioChannel() {
        return leftAudioChannel;
    }

    public void setLeftAudioChannel(String leftAudioChannel) {
        this.leftAudioChannel = leftAudioChannel;
    }

    @Column(name = "right_audio_channel")
    public String getRightAudioChannel() {
        return rightAudioChannel;
    }

    public void setRightAudioChannel(String rightAudioChannel) {
        this.rightAudioChannel = rightAudioChannel;
    }

    @Column(name = "water_mark_flag")
    public int getWaterMarkFlag() {
        return waterMarkFlag;
    }

    public void setWaterMarkFlag(int waterMarkFlag) {
        this.waterMarkFlag = waterMarkFlag;
    }

    @Column(name = "qitan_id")
    public long getQitanId() {
        return qitanId;
    }

    public void setQitanId(long qitanId) {
        this.qitanId = qitanId;
    }

    @Column(name = "weibo_topic")
    public String getWeiboTopic() {
        return weiboTopic;
    }

    public void setWeiboTopic(String weiboTopic) {
        this.weiboTopic = weiboTopic;
    }

    @Column(name = "allow_popups")
    public int getAllowPopups() {
        return allowPopups;
    }

    public void setAllowPopups(int allowPopups) {
        this.allowPopups = allowPopups;
    }


    @Column(name = "add_time")
    public Timestamp getAddTime() {
        return addTime;
    }

    public void setAddTime(Timestamp addTime) {
        this.addTime = addTime;
    }

    @Column(name = "update_time", insertable = false, updatable = false)
    public Timestamp getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Timestamp updateTime) {
        this.updateTime = updateTime;
    }

    @Column(name = "is_sync")
    public int getSync() {
        return sync;
    }

    public void setSync(int sync) {
        this.sync = sync;
    }

    @Column(name = "is_delete")
    public int getDeleteFlag() {
        return deleteFlag;
    }

    public void setDeleteFlag(int deleteFlag) {
        this.deleteFlag = deleteFlag;
    }

    @Column(name = "is_member_only")
    public int getMemberOnly() {
        return memberOnly;
    }

    public void setMemberOnly(int memberOnly) {
        this.memberOnly = memberOnly;
    }

    @Column(name = "is_memeber_free")
    public int getMemberFree() {
        return memberFree;
    }

    public void setMemberFree(int memberFree) {
        this.memberFree = memberFree;
    }

    @Column(name = "paid_start_time")
    public Timestamp getPaidStartTime() {
        return paidStartTime;
    }

    public void setPaidStartTime(Timestamp paidStartTime) {
        this.paidStartTime = paidStartTime;
    }


    @Column(name = "paid_end_time")
    public Timestamp getPaidEndTime() {
        return paidEndTime;
    }

    public void setPaidEndTime(Timestamp paidEndTime) {
        this.paidEndTime = paidEndTime;
    }


    @Column(name = "boss_status")
    public String getBossStatus() {
        return bossStatus;
    }

    public void setBossStatus(String bossStatus) {
        this.bossStatus = bossStatus;
    }

    @Column(name = "order_by")
    public int getOrderBy() {
        return orderBy;
    }

    public void setOrderBy(int orderBy) {
        this.orderBy = orderBy;
    }

    @Column(name = "default_logo_url")
    public String getDefaultLogoUrl() {
        return defaultLogoUrl;
    }

    public void setDefaultLogoUrl(String defaultLogoUrl) {
        this.defaultLogoUrl = defaultLogoUrl;
    }

    @Column(name = "page_url")
    public String getPageUrl() {
        return pageUrl;
    }

    public void setPageUrl(String pageUrl) {
        this.pageUrl = pageUrl;
    }

    @Column(name = "start_stream_time")
    public Timestamp getStreamStartTime() {
        return streamStartTime;
    }

    public void setStreamStartTime(Timestamp streamStartTime) {
        this.streamStartTime = streamStartTime;
    }

    @Column(name = "stop_stream_time")
    public Timestamp getStreamEndTime() {
        return streamEndTime;
    }

    public void setStreamEndTime(Timestamp streamEndTime) {
        this.streamEndTime = streamEndTime;
    }

    @Column(name = "should_display")
    public int getAllowComment() {
        return allowComment;
    }

    public void setAllowComment(int allowComment) {
        this.allowComment = allowComment;
    }

    @Column(name = "is_qiyi_produced")
    public int getQiyiProduct() {
        return qiyiProduct;
    }

    public void setQiyiProduct(int qiyiProduct) {
        this.qiyiProduct = qiyiProduct;
    }

    @Column(name = "exclusive_status_iqiyi")
    public int getQiyiExclusive() {
        return qiyiExclusive;
    }

    public void setQiyiExclusive(int qiyiExclusive) {
        this.qiyiExclusive = qiyiExclusive;
    }

    @Column(name = "status")
    public int getFreeStatus() {
        return freeStatus;
    }

    public void setFreeStatus(int freeStatus) {
        this.freeStatus = freeStatus;
    }

    @Column(name = "is_live")
    public Integer getLive() {
        return live;
    }

    public void setLive(Integer live) {
        this.live = live;
    }

    @Column(name = "carousel_episode")
    public Long getCarouselEpisode() {
        return carouselEpisode;
    }

    public void setCarouselEpisode(Long carouselEpisode) {
        this.carouselEpisode = carouselEpisode;
    }

    @Column(name = "rule_id")
    public int getRuleId() {
        return ruleId;
    }

    public void setRuleId(int ruleId) {
        this.ruleId = ruleId;
    }

    @Column(name = "duration")
    public int getDuration() {
        return duration;
    }

    public void setDuration(int duration) {
        this.duration = duration;
    }

    @Column(name = "contract_barcode")
    public String getBarCode() {
        return barCode;
    }

    public void setBarCode(String barCode) {
        this.barCode = barCode;
    }


    @Transient
    public String getChannelName() {
        return channelName;
    }

    public void setChannelName(String channelName) {
        this.channelName = channelName;
    }

    @Transient
    public int getChannelLiveType() {
        return channelLiveType;
    }

    public void setChannelLiveType(int channelLiveType) {
        this.channelLiveType = channelLiveType;
    }

    @Column(name = "album_name")
    public String getAlbumName() {
        return albumName;
    }

    public void setAlbumName(String albumName) {
        this.albumName = albumName;
    }

    @Column(name = "last_sort_time")
    public long getLastSortTime() {
        return lastSortTime;
    }

    public void setLastSortTime(long lastSortTime) {
        this.lastSortTime = lastSortTime;
    }

    @Column(name = "stream_error")
    public String getStreamError() {
        return streamError;
    }

    public void setStreamError(String streamError) {
        this.streamError = streamError;
    }

    @Column(name = "illegal_status")
    public int getIllegalStatus() {
        return illegalStatus;
    }

    public void setIllegalStatus(int illegalStatus) {
        this.illegalStatus = illegalStatus;
    }

    @Column(name = "is_locked")
    public int getIsLocked() {
        return isLocked;
    }

    public void setIsLocked(int isLocked) {
        this.isLocked = isLocked;
    }

    @Column(name = "is_subscribe")
    public int getSubscribe() {
        return subscribe;
    }

    public void setSubscribe(int subscribe) {
        this.subscribe = subscribe;
    }

    @Column(name = "is_subscribe")


    public boolean checkIsIllegal() {
        return illegalStatus != ILLEGAL_STATUS_NO_ERROR;
    }

    @Column(name = "refer_content_type")
    public String getReferContentType() {
        return referContentType;
    }

    public void setReferContentType(String referContentType) {
        this.referContentType = referContentType;
    }

    @Column(name = "episode_grade")
    public int getEpisodeGrade() {
        return episodeGrade;
    }

    public void setEpisodeGrade(int episodeGrade) {
        this.episodeGrade = episodeGrade;
    }

    @Column(name = "automation_rule_id")
    public long getAutomationRuleId() {
        return automationRuleId;
    }

    public void setAutomationRuleId(long automationRuleId) {
        this.automationRuleId = automationRuleId;
    }

    @Column(name = "category")
    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    @Column(name = "chat_room_id")
    public long getChatRoomId() {
        return chatRoomId;
    }

    public void setChatRoomId(long chatRoomId) {
        this.chatRoomId = chatRoomId;
    }

    @Column(name = "chat_display")
    public int getChatDisplay() {
        return chatDisplay;
    }

    public void setChatDisplay(int chatDisplay) {
        this.chatDisplay = chatDisplay;
    }

    @Column(name = "chat_enable")
    public int getChatEnable() {
        return chatEnable;
    }

    public void setChatEnable(int chatEnable) {
        this.chatEnable = chatEnable;
    }

    @Column(name = "daoju_enable")
    public int getDaojuEnable() {
        return daojuEnable;
    }

    public void setDaojuEnable(int daojuEnable) {
        this.daojuEnable = daojuEnable;
    }

    @Column(name = "daoju_id")
    public String getDaojuId() {
        return daojuId;
    }

    public void setDaojuId(String daojuId) {
        this.daojuId = daojuId;
    }

    @Column(name = "daoju_name")
    public String getDaojuName() {
        return daojuName;
    }

    public void setDaojuName(String daojuName) {
        this.daojuName = daojuName;
    }

    @Column(name = "daoju_star")
    public String getDaojuStar() {
        return daojuStar;
    }

    public void setDaojuStar(String daojuStar) {
        this.daojuStar = daojuStar;
    }

    @Transient
    public int getFormal() {
        return formal;
    }

    public void setFormal(int formal) {
        this.formal = formal;
    }

    @Transient
    public int getChannelHasStream() {
        return channelHasStream;
    }

    public void setChannelHasStream(int channelHasStream) {
        this.channelHasStream = channelHasStream;
    }

    @Column(name = "play_status")
    public int getPlayStatus() {
        return playStatus;
    }

    public void setPlayStatus(int playStatus) {
        this.playStatus = playStatus;
    }

    @Column(name = "recommend_rate")
    public int getRecommendRate() {
        return recommendRate;
    }

    public void setRecommendRate(int recommendRate) {
        this.recommendRate = recommendRate;
    }

    @Column(name = "max_playback_period")
    public int getMaxPlaybackPeriod() {
        return maxPlaybackPeriod;
    }

    public void setMaxPlaybackPeriod(int maxPlaybackPeriod) {
        this.maxPlaybackPeriod = maxPlaybackPeriod;
    }

    @Column(name = "recommend_remark")
    public String getRecommendRemark() {
        return recommendRemark;
    }

    public void setRecommendRemark(String recommendRemark) {
        this.recommendRemark = recommendRemark;
    }

    @Column(name = "subject_url")
    public String getSubjectUrl() {
        return subjectUrl;
    }

    public void setSubjectUrl(String subjectUrl) {
        this.subjectUrl = subjectUrl;
    }



    public static void calPlayStatus(ProgramData programData) {
        long maxPlaybackPeriod = 1000L * programData.getMaxPlaybackPeriod();
        long currentTime = System.currentTimeMillis();
        if (currentTime < programData.getStartPlayTime().getTime()) {
            programData.setPlayStatus(ProgramData.PST_WAITING);
        } else if (currentTime < programData.getStopPlayTime().getTime()) {
            programData.setPlayStatus(ProgramData.PST_LIVE);
        } else if (currentTime < programData.getStartPlayTime().getTime() + maxPlaybackPeriod) {
            programData.setPlayStatus(ProgramData.PST_REPLAY);
        } else {
            programData.setPlayStatus(ProgramData.PST_REQUEST);
        }
    }

    @Column(name = "notice_stop_time")
    public Timestamp getNoticeStopTime() {
        return noticeStopTime;
    }

    public void setNoticeStopTime(Timestamp noticeStopTime) {
        this.noticeStopTime = noticeStopTime;
    }

    @Column(name = "notice_start_time")
    public Timestamp getNoticeStartTime() {
        return noticeStartTime;
    }

    public void setNoticeStartTime(Timestamp noticeStartTime) {
        this.noticeStartTime = noticeStartTime;
    }

    @Column(name = "hot")
    public int getHot() {
        return hot;
    }

    public void setHot(int hot) {
        this.hot = hot;
    }

    @Column(name = "test")
    public int getTest() {
        return test;
    }

    public void setTest(int test) {
        this.test = test;
    }

    @Column(name = "delay_times")
    public int getDelayTimes() {
        return delayTimes;
    }

    public void setDelayTimes(int delayTimes) {
        this.delayTimes = delayTimes;
    }

    @Column(name = "project_type")
    public String getProjectType() {
        return projectType;
    }

    public void setProjectType(String projectType) {
        this.projectType = projectType;
    }

    @Column(name = "resource_id")
    public String getResourceId() {
        return resourceId;
    }

    public void setResourceId(String resourceId) {
        this.resourceId = resourceId;
    }

    @Column(name = "snap_shot_type")
    public int getSnapShotType() {
        return snapShotType;
    }

    public void setSnapShotType(int snapShotType) {
        this.snapShotType = snapShotType;
    }


    @Column(name = "snap_pic_url" ,updatable = false)
    public String getSnapPicUrl() {
        return snapPicUrl;
    }

    public void setSnapPicUrl(String snapPicUrl) {
        this.snapPicUrl = snapPicUrl;
    }

    @Column(name = "check_type")
    public int getCheckType() {
        return checkType;
    }

    public void setCheckType(int checkType) {
        this.checkType = checkType;
    }

    @Column(name = "boss_info")
    public String getBossInfo() {
        return bossInfo;
    }

    public void setBossInfo(String bossInfo) {
        this.bossInfo = bossInfo;
    }

    @Column(name = "charge_status")
    public int getChargeStatus() {
        return chargeStatus;
    }

    public void setChargeStatus(int chargeStatus) {
        this.chargeStatus = chargeStatus;
    }

    @Column(name = "chat_rights")
    public int getChatRights() {
        return chatRights;
    }

    public void setChatRights(int chatRights) {
        this.chatRights = chatRights;
    }

    @Column(name = "chat_fake")
    public int getChatFake() {
        return chatFake;
    }

    public void setChatFake(int chatFake) {
        this.chatFake = chatFake;
    }

    @Column(name = "chat_popups")
    public int getChatPopups() {
        return chatPopups;
    }

    public void setChatPopups(int chatPopups) {
        this.chatPopups = chatPopups;
    }

    @Column(name = "public_level")
    public int getPublicLevel() {
        return publicLevel;
    }

    public void setPublicLevel(int publicLevel) {
        this.publicLevel = publicLevel;
    }

    @Column(name = "advert_duration")
    public int getAdvertDuration() {
        // return advertDuration;
        return 0;
    }

    public void setAdvertDuration(int advertTime) {
        //
        this.advertDuration = 0;
        this.advertDuration = advertTime;
    }
    @Column(name = "advert_enable")
    public int getAdvertEnable() {
        return advertEnable;
    }

    public void setAdvertEnable(int advertEnable) {
        this.advertEnable = advertEnable;
    }

    @Column(name = "director_enable")
    public int getDirectorEnable() {
        return directorEnable;
    }

    public void setDirectorEnable(int directorEnable) {
        this.directorEnable = directorEnable;
    }

    @Column(name = "logo_hidden")
    public String getLogoHidden() {
        return logoHidden;
    }

    public void setLogoHidden(String logoHidden) {
        this.logoHidden = logoHidden;
    }

    @Column(name = "match_summary")
    public String getMatchSummary() {
        return matchSummary;
    }

    public void setMatchSummary(String matchSummary) {
        this.matchSummary = matchSummary;
    }

    @Column(name = "snap_shot_gap")
    public int getSnapShotGap() {
        return snapShotGap;
    }

    public void setSnapShotGap(int snapShotGap) {
        this.snapShotGap = snapShotGap;
    }

    @Column(name = "dbt_region")
    public String getDbtRegion() {
        return dbtRegion;
    }

    public void setDbtRegion(String dbtRegion) {
        this.dbtRegion = dbtRegion;
    }

    @Column(name = "vip_type")
    public int getVipType() {
        return vipType;
    }

    public void setVipType(int vipType) {
        this.vipType = vipType;
    }

    @Column(name = "program_tag")
    public String getProgramTag() {
        return programTag;
    }

    public void setProgramTag(String programTag) {
        this.programTag = programTag;
    }

    @Column(name = "tab_controls")
    public String getTabConrtols() {
        return tabConrtols;
    }

    public void setTabConrtols(String tabConrtols) {
        this.tabConrtols = tabConrtols;
    }

    @Column(name = "is_dispaly_recommend")
    public int getDisplayRecommend() {
        return displayRecommend;
    }

    public void setDisplayRecommend(int displayRecommend) {
        this.displayRecommend = displayRecommend;
    }

    @Column(name = "need_oa" , insertable = true, updatable = false)
    public int getNeedOA() {
        return needOA;
    }

    public void setNeedOA(int needOA) {
        this.needOA = needOA;
    }

    @Column(name = "oa_doc_no" , insertable = true, updatable = false)
    public String getOaDocNo() {
        return oaDocNo;
    }

    public void setOaDocNo(String oaDocNo) {
        this.oaDocNo = oaDocNo;
    }
    @Column(name = "oa_doc_url" , insertable = true, updatable = false)
    public String getOaDocUrl() {
        return oaDocUrl;
    }

    public void setOaDocUrl(String oaDocUrl) {
        this.oaDocUrl = oaDocUrl;
    }

    @Column(name = "oa_doc_editor_status" , insertable = true, updatable = false)
    public String getOaDocEditorStatus() {
        return oaDocEditorStatus;
    }

    public void setOaDocEditorStatus(String oaDocEditorStatus) {
        this.oaDocEditorStatus = oaDocEditorStatus;
    }

    @Transient
    public int getDirectorOpen() {
        return directorOpen;
    }

    public void setDirectorOpen(int directorOpen) {
        this.directorOpen = directorOpen;
    }
}
